この記事では仮想記憶管理についてIT初心者にも分かりやすく解説します。
仮想記憶管理
- 仮想記憶管理とは、補助記憶装置を使って主記憶装置の容量を拡張する技術。
ページング方式
- CPUは主記憶装置としかやり取り出来ないため、どのデータを主記憶に入れて、どのデータを補助記憶に入れるかを決める必要がある。これをページング方式と言う。
- ページフォールトとは、CPUが主記憶にアクセスした時に必要なデータが存在しないこと。
- ページアウトとは、主記憶から補助記憶にデータを追い出すこと。
- ページインとは、補助記憶から主記憶にデータを入れること。
- ページフォールトが発生すると、CPUの処理時間が延びる。これをスラッシングと言う。
ページ置換えアルゴリズム
- FIFOでは主記憶に最初に入れたデータから追い出す。
- デマンドページングはその時に必要なデータだけを補助記憶から主記憶に持ってくる。
- プリページングはその時に必要なデータ+近々必要になるデータを補助記憶から主記憶に持ってくる。
応用情報では仮想記憶管理に関する問題が出題されます。是非最後までご覧ください。
仮想記憶管理とは?
プログラム実行中の主記憶装置の役割
CPUはプログラムを実行するとき、必要なデータや命令を保管している主記憶装置をデータをやり取りします。
プログラムによって必要な容量は異なります。
例えば、容量が16GBの主記憶装置を持つパソコンでは7GB必要なプログラムAと6GB必要なプログラムBの両方を動かすことが出来ます。
しかし、そこに追加で5GB必要なプログラムCを動かすことは出来ません。
プログラムを実行するために必要な主記憶装置の容量が足りないからです。
補助記憶装置を使った仮想記憶管理
主記憶装置だけでは容量が足りないので補助記憶装置を使って容量を拡張するのが仮想記憶管理です。
下図のように、補助記憶装置の一部を主記憶装置のように使うことが出来れば、24GB分のプログラムを実行することが出来ます。このような仕組みを仮想記憶管理と呼びます。
ページング方式
仮想記憶管理でプログラム実行に必要な容量を拡張できたとは言え、CPUがやり取りをするのはあくまでも主記憶装置です。
なので、プログラム実行によく使うデータは主記憶装置に、あまり使わないデータは補助記憶装置に保管する等の工夫が必要です。
では、主記憶装置に存在せず、補助記憶装置に存在するデータを使う場合はどうするのでしょうか?
ページフォールト・ページアウト・ページイン
主記憶装置に存在せず、補助記憶装置に存在するデータを使う場合は次のSTEPで処理を行います。
- ページフォールト:主記憶装置にデータが存在しないことを確認する
- ページアウト:比較的必要ないデータを主記憶装置から補助記憶装置に追い出す
- ページイン:必要なデータを補助記憶装置から主記憶装置に戻す
ページフォールト→ページアウト→ページインの一連の流れをページングと言います。
主記憶装置に空き領域があれば、ページアウトをする必要が無いので、
ページフォールト→ページインの流れになります。
ページフォールト
CPUが必要とするデータが主記憶装置に存在しないことをページフォールトと言います。
ページアウト
比較的必要ないデータを主記憶装置から補助記憶装置に追い出すことをページアウトと言います。
ページイン
必要なデータを補助記憶装置から主記憶装置に戻すことをページインと言います。
スラッシング
ページの置換えが多く発生すると、その分プログラムの処理能力が低下します。これをスラッシングと言います。
ページ置換えアルゴリズム
ページアウトするとき、どのデータを補助記憶装置に追い出すのか決定する必要があります。その方法には以下の4つがあります。
- FIFO (First In First Out)
一番最初に主記憶装置に入れたデータを追い出します。 - LIFO (Last In First Out)
一番最後に主記憶装置に入れたデータを追い出します。 - LRU (Least Recently Used)
最も長く使用されていないデータを追い出します。 - LFU (Least Frequently Used)
最も使用頻度が低いデータを追い出します。
主記憶装置にデータを読み込む方式
CPUが主記憶装置にデータを要求するとき、その時に必要なデータのみを要求するデマンドページングと必要なデータ+近々必要になるデータも要求するプリページングの2種類の方法を使います。
デマンドページングは必要なデータだけを要求するので、主記憶装置に入るデータ量が最小限になります。しかし、その時に必要なデータだけしか主記憶装置に入らないのでページフォールトの発生率は高くなります。
プリページングは必要なデータ+近々必要なデータも要求するので、主記憶装置に入るデータ量はデマンドページングより多くなりますが、その分、ページフォールトの発生率も低くなります。
応用情報技術者試験での出題例
令和5年度秋期問16
応用情報技術者
午前試験 令和5年度秋期問16
ページング方式の仮想記憶において,あるプログラムを実行したとき,1回のページフォールトの平均処理時間は30ミリ秒であった。ページフォールト発生時の処理時間が次の条件であったとすると,ページアウトを伴わないページインだけの処理割合は幾らか。
〔ページフォールト発生時の処理時間〕
(1)ページアウトを伴わない場合,ページインの処理時間は20ミリ秒である。
(2)ページアウトを伴う場合,置換えページの選択,ページアウト,ページインの合計処理時間は60ミリ秒である。
ア 0.25 イ 0.33 ウ 0.67 エ 0.75
正解は”エ”
ページアウトを伴わないページインだけの処理割合をαとしたとき、
20ミリ秒×α+60ミリ秒×(1-α)=30ミリ秒となり、α=0.75で答えはエとなる。
令和5年度春期問17
応用情報技術者
午前試験 令和5年度春期問17
仮想記憶システムにおいて,ページ置換えアルゴリズムとしてFIFOを採用して,仮想ページを参照列1,4,2,4,1,3を3ページ枠の実記憶に割り当てて処理を行った。表の割当てステップ”3″までは,仮想ページ参照列中の最初の1,4,2をそれぞれ実記憶に割り当てた直後の実記憶ページの状態を示している。残りを全て参照した直後の実記憶ページの状態を示す太枠部分に該当するものはどれか。
正解は”ア”
FIFOなので、最初に主記憶に入れたデータから追い出します。
ステップ3までは実記憶ページの状態が記載されているので、ステップ4からどうなるか考えましょう。
【ステップ4】
仮想ページ番号4を参照していますが、実記憶ページに4があるのでページフォールトは発生しません。よって、実記憶ページの状態は〔1,4,2〕のままです。
【ステップ5】
ステップ4と同様、参照する仮想ページ番号1が実記憶ページに存在するので、実記憶ページの状態は〔1,4,2〕のままです。
【ステップ6】
仮想ページ番号3を参照していますが、実記憶ページに3は存在しないのでページングする必要があります。FIFOなので、最初に主記憶に入れた仮想ページ番号1を追い出して、仮想ページ番号3を入れます。よって、実記憶ページの状態は〔3,4,2〕になり、答えはウです。
令和5年度春期問18
応用情報技術者
午前試験 令和5年度春期問18
仮想記憶方式に関する記述のうち,適切なものはどれか。
ア LRUアルゴリズムは,使用後の経過時間が最長のページを置換対象とするページ置換アルゴリズムである。
イ アドレス変換をインデックス方式で行う場合は,主記憶に存在する全ページ分のページテーブルが必要になる。
ウ ページフォールトが発生した場合は,ガベージコレクションが必要である。
エ ページングが繰り返されるうちに多数の小さな空きメモリ領域が発生することを,フラグメンテーションという。
正解は”ア”
ちなみに、ページングで交換されるデータは固定長なのでフラグメンテーションは発生しません。
令和4年度秋期問17
応用情報技術者
午前試験 令和4年度秋期問17
ほとんどのプログラムの大きさがページサイズの半分以下のシステムにおいて,ページサイズを半分にしたときに予想されるものはどれか。ここで,このシステムは主記憶が不足しがちで,多重度やスループットなどはシステム性能の限界で運用しているものとする。
ア ページサイズが小さくなるので,領域管理などのオーバーヘッドが減少する。
イ ページ内に余裕がなくなるので,ページ置換えによってシステム性能が低下する。
ウ ページ内の無駄な空き領域が減少するので,主記憶不足が緩和される。
エ ページフォールトの回数が増加するので,システム性能が低下する。
正解は”ウ”
ほとんどのプログラムの大きさがページサイズの半分以下ということは、現在は無駄に主記憶の領域をプログラムの為に準備していることになります。
なので、ページサイズを半分以下にすれば無駄に確保していた主記憶の領域を解放できるので、主記憶不足が緩和できます。
令和3年度秋期問16
応用情報技術者
午前試験 令和3年度秋期問16
ページング方式の仮想記憶において,ページ置換えの発生頻度が高くなり,システムの処理能力が急激に低下することがある。このような現象を何と呼ぶか。
ア スラッシング
ウ フラグメンテーション
イ スワップアウト
エ ページフォールト
正解は”ア”
ページフォールトの発生頻度が上がり、処理能力が低下することをスラッシングと言います。
令和3年度秋期問17
応用情報技術者
午前試験 令和3年度秋期問17
主記憶へのアクセスを1命令当たり平均2回行い,ページフォールトが発生すると1回当たり40ミリ秒のオーバヘッドを伴うシステムがある。ページフォールトによる命令実行の遅れを1命令当たり平均0.4マイクロ秒以下にするために許容できるページフォールト発生率は最大幾らか。ここで,他のオーバヘッドは考慮しないものとする。
ア 5×10⁻⁶ イ 1×10⁻⁵ ウ 5×10⁻⁵ エ 1×10⁻⁴
正解は”ア”
ページフォールトの発生率をαとすると、
1命令当たりの命令実行の遅れ=40ミリ秒×α×2=80ミリ秒×α=80000マイクロ秒×αです。今、1命令当たりの命令実行の遅れを0.4マイクロ秒以下にする必要があるため、
α=5×10⁻⁶となり、答えはアとなります。
令和3年度秋期問19
応用情報技術者
午前試験 令和3年度秋期問19
仮想記憶方式における補助記憶の機能はどれか。
ア 主記憶からページアウトされたページを格納する。
イ 主記憶が更新された際に,更新前の内容を保存する。
ウ 主記憶と連続した仮想アドレスを割り当てて,主記憶を拡張する。
エ 主記憶のバックアップとして,主記憶の内容を格納する。
正解は”ア”
仮想記憶方式において、補助記憶装置は主記憶装置からページアウトされたページを格納する役割を持ちます。
令和3年度春期問19
応用情報技術者 午前試験
令和3年度春期問19
ページング方式の仮想記憶において,ページアクセス時に発生する事象をその回数の多い順に並べたものはどれか。ここで,A≧Bは,Aの回数がBの回数以上,A=Bは,AとBの回数が常に同じであることを表す。
ア ページアウト≧ページイン≧ページフォルト
イ ページアウト≧ページフォールト≧ページイン
ウ ページフォールト=ページアウト≧ページイン
エ ページフォールト=ページイン≧ページアウト
正解は”エ”
ページフォールトが発生すれば絶対にページインをする必要があるので、
ページフォールト=ページインになります。
また、主記憶装置に空き領域があればページアウトはする必要が無いので、
ページイン≧ページアウトになります。